// 本包是为了验证  实验1“闭包使用外部的变量，自动是引用” 实验2 “什么叫做不同的实例”
package main

import "fmt"

func main() {
	var t = a()
	var b = a()
	fmt.Println(t()) //1
	fmt.Println(t()) //2
	fmt.Println(t()) //3
	fmt.Println(b()) //4
	// 1 2 3 验证了1 ， 123 和4 验证了实验2。
	//分析如下： 123 他们使用的实例都是t，那么t的三次调用，显然调用的是同一个实例，也就是说同一个函数实例，
	//123 和4 显然他们是两个实例 t实例和b实例，那么他们的运行空间就是完全两个独立的个体，或者说是两个完全独立的环境。所以多次调用同一个函数实例
	//那么就可以一直使用i变量每次都是引用，所以它才可以一直递增。而 t b 两个实例，自然 当调用b实例的时候函数是从初始变量2 开始了执行。
}

func a() func() int {
	var i = 1
	return func() int {
		i++
		return i
	}

}
